<?php
class RegisterController extends FrontendController
{
    public function actions()
    {
        return array(
            'captcha'=>array(
                'class'=>'CCaptchaAction',
                'backColor'=>0xDCAD79,
            ),
        );
    }

    public function actionIndex()
    {
        $this->render('index');
    }

    public function actionRegister()
    {
        $user=new User();
        $profile=new Profile();
        $statistics=new UserStatistics();

        $user->setScenario('register');
        $this->performAjaxValidation(array($user,$profile));

        if(isset($_POST['User'], $_POST['Profile'])){

            $userMessage='К сожалению, нам не удалось Вас зарегистрировать.';
            Yii::app()->user->setFlash('userMessage',$userMessage);

            $user->attributes=$_POST['User'];
            $profile->attributes=$_POST['Profile'];
            $user->confirmCode=$user->getConfirmCodeString();

            $transaction=Yii::app()->db->beginTransaction();

            try{
                if($user->sendConfirmCode()){
                    $user->save(false);
                    $profile->userId=$user->id;
                    $profile->save(false);
                    $statistics->userId=$user->id;
                    $statistics->save(false);
                }
                $transaction->commit();
                $this->redirect(Yii::app()->createUrl('user/index'));
            }catch(Exception $e){
                $transaction->rollback();
                Yii::app()->user->setFlash('userMessage',$userMessage.'<br />'.$e);
                $this->redirect(Yii::app()->createUrl('user/index'));
            }
        }

        $this->redirect(Yii::app()->createUrl('user/index'));
    }

    public function actionActivation()
    {
        $model=new User();
        Yii::app()->user->setFlash('userMessage','К сожалению, Аккаунт активировать не удалось.');
        $email=Yii::app()->getRequest()->getQuery('email');
        $confirmCode=Yii::app()->getRequest()->getQuery('confirmCode');

        if($email && $confirmCode && $user=$model->findByAttributes(array('email'=>$email))){
            $identity=new DSUserIdentity;
            $name=$user->profile->firstName ? $user->profile->firstName : $user->userName;
            if($user->confirmCode==$confirmCode){
                $user->isConfirmed=$user->isActive=1;
                $user->role=1;
                $user->confirmCode=null;
                if($user->update()){
                    Yii::app()->user->setFlash('userMessage','Привет, '.$name.'!<br />Поздравляем! Ваш аккаунт успешно активирован.');
                    $identity->login($user);
                }
            }elseif($user->isConfirmed){
                Yii::app()->user->setFlash('userMessage','Привет, '.$name.'!<br />Ваш аккаунт был активирован ранее.');
                $identity->login($user);
            }
        }

        $this->redirect(Yii::app()->createUrl('user/index'));
    }

    protected function performAjaxValidation($model)
    {
        if(isset($_POST['ajax']) && $_POST['ajax']==='form-register'){
            echo CActiveForm::validate($model);
            Yii::app()->end();
        }
    }
}